package com.itlong.cloud.app.dao;

import com.itlong.cloud.POJO.DTO.app.old.AppOldUserInfoDto;
import com.itlong.cloud.POJO.PO.AppUserProjectPO;
import com.itlong.cloud.POJO.PO.ProjectPO;
import com.itlong.cloud.POJO.VO.app.old.AppOldUserInfoVO;
import com.itlong.cloud.POJO.VO.app.old.AppOldUserOwnProjectVO;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 * 旧版APP_登录注册版块数据访问接口
 * </desc>
 *
 * @createDate 2017/10/17
 */

@Mapper
@Repository
public interface IAppOldRegisterDao extends IAbstractBaseDao<AppOldUserInfoDto> {

    /**
     * <desc>
     * 根据用户输入对象查询用户响应对象集合
     * </desc>
     *
     * @param appOldUserInfoDto
     * @return
     * @author cuiduanwu
     * @createDate 2017/10/17
     */
    List selectVOByDTO(AppOldUserInfoDto appOldUserInfoDto);

    /**
     * <desc>
     * 根据手机号查询用户VO
     * </desc>
     *
     * @param phoneNo
     * @return
     * @author cuiduanwu
     * @createDate 2017/10/17
     */
    AppOldUserInfoVO selectVOByPhone(String phoneNo);


    /**
     * <desc>
     * 根据手机号查询用户DTO
     * </desc>
     *
     * @param phoneNo
     * @return
     * @author cuiduanwu
     * @createDate 2017/10/17
     */
    AppOldUserInfoDto selectDtoByPhone(String phoneNo);


    /**
     * <desc>
     * 根据用户DTO更新用户信息
     * </desc>
     *
     * @param appOldUserInfoDto
     * @return
     * @author cuiduanwu
     * @createDate 2017/10/18
     */
    int updateNotNullByAppOldUserInfoDto(AppOldUserInfoDto appOldUserInfoDto);


    /**
     * <desc>
     * 保存APP端用户
     * </desc>
     *
     * @param
     * @return
     * @author cuiduanwu
     * @createDate 2017/09/25
     */
    Integer saveAppOldUser(AppOldUserInfoDto appOldUserInfoDto);

    /**
     * <desc>
     *      根据用户ID获取用户项目附加信息
     * </desc>
     *
     * @param appUserProjectPO
     * @return
     */
    List<AppOldUserOwnProjectVO> getUserOwnProjectsInfo(AppUserProjectPO appUserProjectPO);


    /**
     * <desc>
     *      APP端登录根据用户ID与项目编号获取房间总数或业主房间总数
     * </desc>
     *
     * @param params 用户ID与项目编号
     * @return
     * @throws Exception
     * @createDate 2017/9/28
     */
    Integer countUserAttacheInfoInProject(Map<String, Object> params);

    /**
     * <desc>
     *      APP端获取用户已授权的二级用户数量
     * </desc>
     *
     * @param params
     * @return
     */
    Integer countUserAuthChild(Map<String, Object> params);

    /**
     * <desc>
     *     旧版APP_根据项目编号查询项目信息
     * </desc>
     * @param projectId
     * @return
     */
    ProjectPO getProjectInfoByPk(@Param("projectId") String projectId);


}
